While software products can be written from scratch, it is typical that new software products incorporate at least some amount of computer coding that is preexisting. Such preexisting coding can comprise certain lines of computer code, source files, content files, or other data structures as one skilled in the art will understand (hereinafter collectively referred to as “preexisting files” or “files” in this disclosure). For example, a sophisticated software product such as would run in a Windows™ operating system might include tens of thousands of preexisting files.
Each of these preexisting files in a new software product may be subject to a property right of some kind. For example, a preexisting file may be subject to a copyright, a patent, a trademark, a trade secret, a claim of ownership, or other proprietary rights, or may be licensed from a third party holding such rights (hereinafter “property rights” for simplicity). Moreover, a preexisting file, if licensed for example, may be subject to certain restrictions on how the preexisting file can be used (e.g., for educational non-commercial uses only), and/or may be subject to other requirements (e.g., that any new software product incorporating the preexisting file by “marked” in a certain way (such as with a copyright notice) to give public notice of the affected rights). In short, entities that compile or produce new software products have good reason to understand the property rights present in preexisting files in a new software product to ensure that third party property rights are being respected.
Additionally, the compiling or producing entity similarly has an interest in understanding whether its own preexisting files are used in a new software product. Such interest is spurred by similar concerns, such as ensuring that the software product is properly marked, and/or is properly respected by others who might license or use it.
Additionally, end users or licensees of a new software product too have a need to understand the property rights present in a new software product. As well as wishing to ensure proper respect of the producing entity's property rights in the new software product, the end user or licensee may want to verify that the producing entity has valid rights to any third party property rights to ensure that its use of the new software product will not be subject to a third party's claim.
Because of these concerns, software producing entities and resulting end user or licensees typically perform some level of legal diligence before the release or use of new software products. However, it is believed that to date most of this diligence has been manually accomplished. This proves to be a very laborious process, as the person tasked with such diligence must first determine what preexisting files are present in the new software product, and then determine what property rights such preexisting files are subject to, if any. Typically such diligence is performed by hand (i.e., by reviewing license agreements, by reviewing the source code for notices pertaining to property rights, etc.), or may lend itself to informal inquiries to coworkers involved in compiling the new software product whose memories or records might be incomplete. It should therefore be appreciated that such a manual undertaking can be immense and error prone, especially when dealing with a new software product containing tens of thousands of preexisting files. Moreover, if the diligence process concerning a particular file is not well-recorded, such diligence may be needlessly and redundantly performed again at a future date.
Accordingly, the software art would be benefited by improved and at least semi-automated methods for identifying and tracking the various property rights that might be present in a new software product. This disclosure provides such solutions.